package com.cpos.bkge.utils;/*
*  @创建人 Cpos_wl
*  @创建时间 2020/8/10
   @描述

   验证码工具类
*/

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
@Component
public class CodeUtils {

    // 图片高度
    private static final int IMG_HEIGHT = 100;
    // 图片宽度
    private static final int IMG_WIDTH = 30;
    // 验证码长度
    private static final int CODE_LEN = 4;

    @Value("${cpos.upload.codeUrl}")
    private String codeUrl;

    //生成验证码
    public static Map<String,Object> code(){

        Map<String,Object> map = new HashMap<>();

        // 用于绘制图片，设置图片的长宽和图片类型（RGB)
        BufferedImage bi = new BufferedImage(IMG_HEIGHT, IMG_WIDTH, BufferedImage.TYPE_INT_RGB);
        // 获取绘图工具
        Graphics graphics = bi.getGraphics();
        graphics.setColor(new Color(50, 230, 200)); // 使用RGB设置背景颜色
        graphics.fillRect(0, 0, 100, 30); // 填充矩形区域

        // 验证码中所使用到的字符
        char[] codeChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456".toCharArray();
        String captcha = ""; // 存放生成的验证码
        Random random = new Random();
        for(int i = 0; i < CODE_LEN; i++) { // 循环将每个验证码字符绘制到图片上
            int index = random.nextInt(codeChar.length);
            // 随机生成验证码颜色
            graphics.setColor(new Color(random.nextInt(150), random.nextInt(200), random.nextInt(255)));
            // 将一个字符绘制到图片上，并制定位置（设置x,y坐标）
            graphics.drawString(codeChar[index] + "", (i * 20) + 15, 20);
            captcha += codeChar[index];
        }

        map.put("code",captcha);
        File outputfile = new File("E:\\lenovo\\Cpos-Boot\\target\\classes\\static\\image\\code\\code.jpg");
        try {
            ImageIO.write(bi, "jpg", outputfile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return map;
    }

    //校验验证码
    public static Object checkCode(){
        // 获取存放在session中的验证码
      /*  String code = (String) req.getSession().getAttribute("code");
        // 获取页面提交的验证码
        String inputCode = req.getParameter("code");
        if(code.toLowerCase().equals(inputCode.toLowerCase())) { // 验证码不区分大小写
            // 验证成功，跳转到成功页面
            req.getRequestDispatcher("/success.jsp").forward(req, resp);
        } else { // 验证失败
            req.getRequestDispatcher("/fail.jsp").forward(req, resp);
        }*/
        return null;
    }

/*    public static void main(String[] args) {
        Map<String, Object> code = CodeUtils.code();
        System.out.println(code.get("code"));
    }*/
}
